iT邦幫忙

0

Python 爬蟲系列 第三方庫 tqdm 顯示迴圈或任務的進度條

  • 分享至 

  • xImage
  •  

tqdm 是 Python 的一個第三方庫,用於顯示迴圈或任務的進度條,讓開發者可以更直觀地了解程序執行的進度。這在執行長時間運行的任務(如迴圈處理、大型文件的讀寫、爬蟲等)時非常有用。

  1. 安裝
    要使用 tqdm,需要先安裝:
    pip install tqdm

  2. 基本用法
    tqdm 可以直接用在 for 迴圈中。
    範例:簡單進度條

from tqdm import tqdm
import time

for i in tqdm(range(10)):
    time.sleep(0.5)  # 模擬耗時任務

執行結果會顯示一個進度條:

  50%|███████████           | 5/10 [00:02<00:02,  2.00it/s]
  1. 進階用法
    3-1.進度條描述:可以添加一段描述,說明正在處理的內容。
for i in tqdm(range(10), desc="Processing"):
    time.sleep(0.5)
3-2. 處理數據集合:可以使用 tqdm 包裝任何可迭代對象。
data = [1, 2, 3, 4, 5]
for item in tqdm(data, desc="Loading data"):
    time.sleep(0.5)
3-3. 手動更新進度:適合用於非迴圈任務。
from tqdm import tqdm
import time

with tqdm(total=100) as pbar:
    for i in range(10):
        time.sleep(0.5)
        pbar.update(10)  # 每次更新進度條 10%
        ```
        
    3-4. 結合函數:tqdm 可以直接用於函數式處理。

from tqdm import tqdm
import time

results = [x**2 for x in tqdm(range(1000), desc="Calculating squares")]

    3-5. 嵌套進度條:對於多層迴圈,可以使用嵌套的進度條:

from tqdm import tqdm
import time

for i in tqdm(range(3), desc="Outer loop"):
for j in tqdm(range(5), desc="Inner loop", leave=False):
time.sleep(0.1)


#### 特性
- 進度顯示豐富
包含當前進度、耗時、估計剩餘時間、每秒處理速度等信息。
例

Processing: 50%|█████ | 5/10 [00:02<00:02, 2.00it/s]

- 高度自定義
支持自定義進度條樣式、長度、顏色等。
- 多線程和多進程支持
可以用於並行處理任務。
- 支持多平台
在大多數終端和 Jupyter Notebook 中均可正常顯示。

#### 與其他庫結合
1. 結合 Pandas
在處理 DataFrame 時顯示進度條。

import pandas as pd
from tqdm import tqdm

tqdm.pandas(desc="Processing rows")
df = pd.DataFrame({'a': range(100)})
df['b'] = df['a'].progress_apply(lambda x: x**2)


2. 結合 asyncio
用於異步任務的進度顯示。

import asyncio
from tqdm.asyncio import tqdm

async def async_task(n):
await asyncio.sleep(0.5)
return n

async def main():
tasks = [async_task(i) for i in range(10)]
results = [await t for t in tqdm(asyncio.as_completed(tasks), total=len(tasks))]
print(results)

asyncio.run(main())


#### 常用參數

| 參數名稱 | 說明                           | 範例                                     |
|----------|--------------------------------|------------------------------------------|
| **desc** | 進度條前的描述文字             | `tqdm(range(10), desc="Loading")`        |
| **total** | 設置進度條總數量(適用於手動更新) | `tqdm(total=100)`                        |
| **leave** | 任務結束後是否保留進度條       | `tqdm(range(10), leave=False)`           |
| **ncols** | 設置進度條寬度                | `tqdm(range(10), ncols=80)`              |
| **unit** | 單位顯示                       | `tqdm(range(10), unit="files")`          |

#### 小結
tqdm 是一個功能強大且簡單易用的工具,用於讓程序的執行進度一目了然。無論是處理迴圈還是批量任務,它都能顯著提升用戶體驗,並適合與各種 Python 庫結合使用。

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言